Ubuntu 18.04를 기준으로 작성된 과거의 Nginx 역방향 프록시 예제입니다. 기존 웹 서버 제거와 TLS 설정이 포함되어 있으므로 현재 환경을 확인한 뒤 사용하세요. 아래 설정은 당시 원문을 보존한 것이며 최신 보안 설정을 뜻하지 않습니다.
원문은 Nginx를 설치하고 Apache2를 제거하는 순서로 설명합니다. Apache에서 다른 서비스를 제공 중이라면 그대로 실행하면 안 됩니다.
sudo apt-get install nginx
sudo apt-get remove apache2cd /etc/nginx/conf.d
vim default.confTrilium 주소와 도메인 및 인증서 경로를 환경에 맞게 지정하세요. 원문에 포함된 TLS 1.0과 1.1은 오래된 프로토콜입니다.
# Trilium 실행 주소
upstream trilium {
zone trilium 64k;
server 127.0.0.1:8080; # 실제 호스트와 포트로 변경
keepalive 2;
}
# 프록시와 HTTPS 설정
server {
listen 443 ssl;
server_name trilium.example.net; # 프로토콜을 제외한 도메인으로 변경
ssl_certificate /etc/ssl/note/example.crt; # 인증서 파일 경로로 변경
ssl_certificate_key /etc/ssl/note/example.net.key; # 개인 키 파일 경로로 변경
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log; # 접근 로그 저장 경로 확인
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://trilium;
proxy_read_timeout 90;
}
}
# HTTP 요청을 HTTPS로 전환
server {
listen 80;
server_name trilium.example.net; # 실제 도메인으로 변경
return 301 https://$server_name$request_uri;
}여러 인스턴스를 다른 경로로 제공하려면 location을 조정할 수 있습니다. proxy_pass 끝에 슬래시가 없다면 location 경로의 끝에도 슬래시를 붙이지 않습니다. proxy_cookie_path도 같은 경로로 지정하면 여러 인스턴스에 각각 로그인 상태를 유지할 수 있습니다.
location /trilium/instance-one {
rewrite /trilium/instance-one/(.*) /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://trilium;
proxy_cookie_path / /trilium/instance-one;
proxy_read_timeout 90;
}
마지막 예제의 쿠키 경로 지시문에는 원문에서 빠진 세미콜론을 보완했습니다. 실제 설정을 적용하기 전에 Nginx 구문 검사가 필요합니다.